1. Field
The present invention relates generally to computer systems and more particularly microprocessor based computer systems.
2. Background Information
Advanced Configuration and Power Interface (ACPI) is an extensible tool by which the operating system (OS) can be given greater control over power and resource management functions in computer systems, such as personal computers. ACPI provides a hardware and software interface by which an OS can manipulate the characteristics of motherboard devices. This technology differs from existing Basic Input/Output System (“BIOS”) technologies in at least two regards: (i) the BIOS support code is written in p-code called ACPI Machine Language (“AML”), rather than in the native assembly language of a platform; and (ii) the BIOS support code does not determine the policies of time-outs for power or resource management. Rather, these policies are determined by the operating system.
The ACPI hardware interface provides functionality to the OS in (i) control/detection of system control tasks using a normal interrupt called System Control Interrupt (“SCI”), rather than a System Management Interrupt (“SMI”), and (ii) control of the system power state. The details of a platform's support for the hardware interface are provided in a set of well-defined tables within the system BIOS. The ACPI software interface provides the means for the OS to find the different ACPI related tables in the system BIOS and means for the OS to understand and control the characteristics of the motherboard using AML. AML resides in the tables within the system BIOS. ACPI source language (ASL) is the preferred source language for writing ACPI control methods. Most OEMS and BIOS developers write control methods in ASL. A translation tool translates ASL code to AML code versions of the control methods.
AML is the ACPI control method virtual machine language, i.e., a machine code for a virtual machine that is supported by an ACPI-compatible OS. It is a pseudo-code assembly language that is interpreted by an OS driver. AML is the language processed by the ACPI method interpreter. It is primarily a declarative language and provides a set of declarations that is compiled by the ACPI interpreter into the ACPI name space at definition block load time. However, AML's access to memory, I/O and PCI configuration space is either static or the capabilities provided for dynamic values are so limited as to be useless in may situations. It is thus very difficult for code developers to develop optimal code that can execute fast and hence positively affect performance.
What is needed therefore is a method and apparatus for controlling code execution in a mode where a whole range of native CPU instructions can be executed.